package cn.exrick.xboot.modules.projectinfo.service;

import cn.exrick.xboot.common.vo.PageVo;
import cn.exrick.xboot.common.vo.SearchVo;
import cn.exrick.xboot.modules.bicmktbiddinginfo.entity.RequestData;
import cn.exrick.xboot.modules.projectinfo.entity.*;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.LinkedList;
import java.util.List;

/**
 * 项目信息接口
 * @author sdtf
 */
@DS("other")
public interface IProjectInfoService extends IService<ProjectInfo> {
    /**
     * 今年立项，在建，关闭项目数量金额
     */
    RequireData ProjectNumberAndMoneyByYear();

    /**
     * 本月立项，在建，关闭项目数量金额
     */
    RequireData ProjectNumberAndMoneyByMonth();

    /**
     * 项目生命周期图表
     */
    LinkedList<Object> ProjectLife();
    /**
     * 项目类型图表
     */
    LinkedList<Object> ProjectType();
    /**
     * 协同项目图表
     */
    LinkedList<Object> ProjectWithOther();
    /**
     * 项目状态图表
     */
    LinkedList<Object> ProjectStatus();

    /**
     * 新建重大项目
     */
    List<RequireData> ProjectNewByYear();
    /**
     * 在建重大项目
     */
    List<RequireData> ProjectIsByYear();

    /**
     * 单位基本情况本年
     */
    List<DeptBasicInfo> DeptInfo();
    /**
     * 单位基本情况本月
     */
    List<DeptBasicInfo> DeptInfoByMonth();

    /**
     * 单位基本情况本月（关于生命周期）
     */
    List<DeptLife> DeptProjectLife();


    /**
     * 单位全年收票
     */
    List<DeptLife> ProjectCost();

    /**
     * 单位本月收票
     */
    List<DeptLife> ProjectCostByMonth();
    /**
     * 单位全年开票
     */
    List<DeptLife> ProjectIncome();
    /**
     * 单位本月开票
     */
    List<DeptLife> ProjectIncomeByMonth();



    /**
     * 新建项目三级菜单
     */
    List<ProjectNew> ProjectNewInfo(PageVo pageVo);

    /**
     * 在建项目三级菜单
     */
    List<ProjectNew> ProjectIsInfo(PageVo pageVo);


    /**
     * 数量金额二级菜单本年
     */
    List<NumberAndMoneyTwice> NumberAndMoneyTwice(NumberAndMoneyTwice numberAndMoneyTwice);
    /**
     * 数量金额二级菜单本月
     */
    List<NumberAndMoneyTwice> NumberAndMoneyTwiceByMonth(NumberAndMoneyTwice numberAndMoneyTwice);

    /**
     * 数量金额二级菜单本年 - 关闭项目
     */
    List<NumberAndMoneyTwice> NumberAndMoneyTwiceClose(NumberAndMoneyTwice numberAndMoneyTwice);
    /**
     * 数量金额二级菜单本月  - 关闭项目
     */
    List<NumberAndMoneyTwice> NumberAndMoneyTwiceByMonthClose(NumberAndMoneyTwice numberAndMoneyTwice);



    /**
     * 收票跳转二级菜单
     */
    List<NumberAndMoneyTwice> SPMoneyTwice(PageVo pageVo);

    /**
     * 开票跳转二级菜单
     */
    List<NumberAndMoneyTwice> KPMoneyTwice(PageVo pageVo);

    List<NumberAndMoneyTwice> SPMoneyTwiceByMonth(PageVo pageVo);

    List<NumberAndMoneyTwice> KPMoneyTwiceByMonth(PageVo pageVo);


    /**
     * 立项项目三级菜单
     */
    List<NumberAndMoneyTwice> LXProjectInfoThird(RequestData requestData,PageVo pageVo);

    /**
     * 关闭项目三级菜单
     */
    List<NumberAndMoneyTwice> GBProjectInfoThird(RequestData requestData,PageVo pageVo);

    /**
     * 在建项目三级菜单
     */
    List<NumberAndMoneyTwice> ZJProjectInfoThird(RequestData requestData,PageVo pageVo);
    List<ProjectNew> ProjectIsInfoLikeProjectNumber(ProjectNew projectNew);

    /**
     * 已开工半年项目三级菜单
     */
    List<NumberAndMoneyTwice> BNProjectInfoThird(RequestData requestData,PageVo pageVo);

    List<NumberAndMoneyTwice> BNDYNProjectInfoThird(RequestData requestData,PageVo pageVo);

    List<NumberAndMoneyTwice> YNDLNProjectInfoThird(RequestData requestData,PageVo pageVo);

    List<NumberAndMoneyTwice> LNDSNProjectInfoThird(RequestData requestData,PageVo pageVo);

    List<NumberAndMoneyTwice> SNYSProjectInfoThird(RequestData requestData,PageVo pageVo);


    /**
     * 首页数据--开票金额和收入确认
     */
    DeptLife SYSJ();

    /**
     * 现金流入流出
     */
    DeptLife XJLRLC();

    /**
     * 应收账款
     */
    AllBoardData YSZK();


    /**
     * 首页数据填充
     */
    List<AllBoardData> SYData();


    /**
     * 获取首页数据本年
     */
    List<SYData> getSYData();

    /**
     * 获取首页数据本月
     */
    List<SYData> getSYDataByMonth();

    /**
<<<<<<< HEAD
     * 获取项目金额
     */
    List<ProjectInfo> getProjectAmount();

    /**
     * 获取单位名称
     */
    List<ProjectInfo> getdept();

    /**
     * 在建大项目排行
     */
    List<ProjectInfo> zjprojectorder(PageVo page, SearchVo searchVo);

    List<ProjectInfo> zjprojectordernull(PageVo page);

    /**
     * 立项大项目排行
     */
    List<ProjectInfo> lxprojectorder(PageVo page, SearchVo searchVo);
    List<ProjectInfo> lxprojectordernull(PageVo page);


    /**
     * 关闭大项目排行
     */
    List<ProjectInfo> gbprojectorder(PageVo page, SearchVo searchVo);
    List<ProjectInfo> gbprojectordernull(PageVo page);


    /**
     * 公司不同状态下的数量和金额总数
     */
    List<CompanyNumberAmount> getCompanyNumberAmount(String str);

    /**
     * 在建项目类型分析
     */
    List<ProjectTypeAnalysis> getProjectTypeAnalysis(String str);

}